#ifndef _NE_MIDI_OUT_DEVICE_WIN32_H_
#define _NE_MIDI_OUT_DEVICE_WIN32_H_

#include <audio/MIDI/MIDIOutDevice.h>

#if NE_PLATFORM == NE_PLATFORM_WINDOWS

#include <windows.h>

namespace ne
{
    class NEAPI MIDIOutDeviceWin32 : public MIDIOutDevice
    {
        public:
            MIDIOutDeviceWin32(const uint32_t id, const std::string &name);

            virtual bool open();

            virtual bool reset();

            virtual bool close();

            virtual bool sendEvent(const byte event, const byte parameter1, const byte parameter2);

            virtual bool sendSysExEvent(const byte *buffer, const uint32_t length);

            virtual ~MIDIOutDeviceWin32();

        protected:
            virtual bool _create();

            virtual bool _destroy();

        private:
            HMIDIOUT mOutDeviceHandle;
    };
}

#endif

#endif
